Related articles

*   [Настройка шрифтов](/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D1%88%D1%80%D0%B8%D1%84%D1%82%D0%BE%D0%B2 "Настройка шрифтов")
*   [Infinality (Русский)](/index.php/Infinality_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Infinality (Русский)")
*   [Шрифты окружения Java Runtime](/index.php/%D0%A8%D1%80%D0%B8%D1%84%D1%82%D1%8B_%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_Java_Runtime "Шрифты окружения Java Runtime")
*   [Шрифты Microsoft](/index.php/%D0%A8%D1%80%D0%B8%D1%84%D1%82%D1%8B_Microsoft "Шрифты Microsoft")

Согласно [Википедии](https://ru.wikipedia.org/wiki/Шрифт):

	*Шрифт (нем. Schrift ← schreiben — писать) — графический рисунок начертаний букв и знаков, составляющих единую стилистическую и композиционную систему, набор символов определенного размера и рисунка.*

Имейте в виду, что лицензия некоторых шрифтов может накладывать правовые ограничения.

## Contents

*   [1 Форматы шрифтов](#.D0.A4.D0.BE.D1.80.D0.BC.D0.B0.D1.82.D1.8B_.D1.88.D1.80.D0.B8.D1.84.D1.82.D0.BE.D0.B2)
    *   [1.1 Распространённые расширения](#.D0.A0.D0.B0.D1.81.D0.BF.D1.80.D0.BE.D1.81.D1.82.D1.80.D0.B0.D0.BD.D1.91.D0.BD.D0.BD.D1.8B.D0.B5_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F)
    *   [1.2 Другие форматы](#.D0.94.D1.80.D1.83.D0.B3.D0.B8.D0.B5_.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.82.D1.8B)
*   [2 Установка](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0)
    *   [2.1 Pacman](#Pacman)
    *   [2.2 Создание пакета](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.B0)
    *   [2.3 Установка вручную](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.B2.D1.80.D1.83.D1.87.D0.BD.D1.83.D1.8E)
*   [3 Рекомендации по выбору шрифтов](#.D0.A0.D0.B5.D0.BA.D0.BE.D0.BC.D0.B5.D0.BD.D0.B4.D0.B0.D1.86.D0.B8.D0.B8_.D0.BF.D0.BE_.D0.B2.D1.8B.D0.B1.D0.BE.D1.80.D1.83_.D1.88.D1.80.D0.B8.D1.84.D1.82.D0.BE.D0.B2)
    *   [3.1 Установка Droid Fonts](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_Droid_Fonts)
    *   [3.2 Установка Bitstream Vera Fonts](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_Bitstream_Vera_Fonts)
    *   [3.3 Установка Red Hats Liberation Fonts](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_Red_Hats_Liberation_Fonts)
    *   [3.4 Установка шрифтов Microsoft](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D1.88.D1.80.D0.B8.D1.84.D1.82.D0.BE.D0.B2_Microsoft.C2.AE)
*   [4 Шрифты с включенным LCD фильтром](#.D0.A8.D1.80.D0.B8.D1.84.D1.82.D1.8B_.D1.81_.D0.B2.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.BD.D1.8B.D0.BC_LCD_.D1.84.D0.B8.D0.BB.D1.8C.D1.82.D1.80.D0.BE.D0.BC)
    *   [4.1 "LCD" пакеты](#.22LCD.22_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D1.8B)
    *   [4.2 "LCD" пакеты c патчами Ubuntu](#.22LCD.22_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D1.8B_c_.D0.BF.D0.B0.D1.82.D1.87.D0.B0.D0.BC.D0.B8_Ubuntu)
*   [5 Конфигурация](#.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B0.D1.86.D0.B8.D1.8F)
    *   [5.1 Общие понятия](#.D0.9E.D0.B1.D1.89.D0.B8.D0.B5_.D0.BF.D0.BE.D0.BD.D1.8F.D1.82.D0.B8.D1.8F)
    *   [5.2 Рекомендации по настройке (для патчей *-ubuntu)](#.D0.A0.D0.B5.D0.BA.D0.BE.D0.BC.D0.B5.D0.BD.D0.B4.D0.B0.D1.86.D0.B8.D0.B8_.D0.BF.D0.BE_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B5_.28.D0.B4.D0.BB.D1.8F_.D0.BF.D0.B0.D1.82.D1.87.D0.B5.D0.B9_.2A-ubuntu.29)
        *   [5.2.1 cat ~/.fonts.conf (альтернатива настройкам в /etc/fonts/...)](#cat_.7E.2F.fonts.conf_.28.D0.B0.D0.BB.D1.8C.D1.82.D0.B5.D1.80.D0.BD.D0.B0.D1.82.D0.B8.D0.B2.D0.B0_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0.D0.BC_.D0.B2_.2Fetc.2Ffonts.2F....29)
*   [6 Шрифт в консоли](#.D0.A8.D1.80.D0.B8.D1.84.D1.82_.D0.B2_.D0.BA.D0.BE.D0.BD.D1.81.D0.BE.D0.BB.D0.B8)
    *   [6.1 Теория](#.D0.A2.D0.B5.D0.BE.D1.80.D0.B8.D1.8F)
    *   [6.2 Практика](#.D0.9F.D1.80.D0.B0.D0.BA.D1.82.D0.B8.D0.BA.D0.B0)
*   [7 Внешние ссылки](#.D0.92.D0.BD.D0.B5.D1.88.D0.BD.D0.B8.D0.B5_.D1.81.D1.81.D1.8B.D0.BB.D0.BA.D0.B8)

## Форматы шрифтов

Большинство современных компьютерных шрифтов могут быть в *растровом* или *контурном* формате данных.

	Растровые шрифты

	Состоит из матрицы точек или пикселей, представляющих рисунок каждого символа во всех размерах.

	Контурные или *векторные* шрифты

	Используются кривые Безье, инструкции отрисовки и математические формулы для описания каждого символа, что позволяет масштабировать символы в любой размер.

### Распространённые расширения

*   `bdf` и `bdf.gz` – растровый шрифт, сжатый в gzip (BDF — *B*itmap *D*istribution *F*ormat)
*   `pcf` и `pcf.gz` – растровый, переносимый скомпилированный шрифт, сжатый в gzip
*   `psf`, `psfu`, `psf.gz` и `psfu.gz` – bitmaps, *P*C *s*creen *f*ont, *P*C *s*creen *f*ont *U*nicode and the gzipped versions (not compatible with X.Org)
*   `pfa` and `pfb` – outline fonts, *P*ostScript *f*ont *A*SCII and *P*ostScript *f*ont *b*inary. PostScript fonts carry built-in printer instructions.
*   `ttf` – outline, *T*rue*T*ype *f*ont. Originally designed as a replacement for the PostScript fonts.
*   `otf` – outline, *O*pen*T*ype *f*ont. TrueType with PostScript typographic instructions.

В большинстве случаев, технические различия между TrueType и OpenType можно проигнорировать, многие шрифты с расширением {{ic|ttf} обычно OpenType.

### Другие форматы

The typesetting application, *TeX,* and its companion font software, *Metafont,* render characters using their own methods. Some of the file extensions used for fonts by these two programs are `*pk`, `*gf`, `mf` and `vf`.

*FontForge,* a font editing application, can store fonts in its native text-based format, `sfd`, *s*pline *f*ont *d*atabase.

The [SVG](http://www.w3.org/TR/SVG/fonts.html) format also has its own font description method.

## Установка

Существует множество методов установки шрифтов.

### Pacman

Шрифты и их коллекции можно установить из включенных репозиториев используя [pacman](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Pacman (Русский)"). Увидеть список доступных шрифтов можно командой:

```
$ pacman -Ss font

```

Или исключительно `ttf` шрифты:

```
$ pacman -Ss ttf

```

### Создание пакета

Лучше всего предоставить pacman'у возможность управления установленными шрифтами, что можно сделать создав Arch пакет. Этим можно также поделиться с сообществом в [AUR](/index.php/AUR_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "AUR (Русский)"). Ниже приведён пример создания пакета. Чтобы узнать об этой процедуре больше, смотрите страницу [PKGBUILD](/index.php/PKGBUILD "PKGBUILD").

```
pkgname=ttf-fontname
pkgver=1.0
pkgrel=1
pkgdesc="custom fonts"
arch=('any')
depends=('fontconfig' 'xorg-font-utils')
source=("http://someurl.org/$pkgname.tar.bz2")
install=$pkgname.install

package() {
  install -d "$pkgdir/usr/share/fonts/TTF"
  cp -dpr --no-preserve=ownership "$srcdir/$pkgname/"*.ttf "$pkgdir/usr/share/fonts/TTF/"
}

```

Данный PKGBUILD предполагает что шрифты - TrueType. Установочный файл (`ttf-fontname.install`) тоже должен быть создан для обновления кеша шрифтов:

```
post_install() {
  echo -n "Updating font cache... "
  fc-cache -fs >/dev/null
  mkfontscale /usr/share/fonts/TTF /usr/share/fonts/Type1
  mkfontdir /usr/share/fonts/TTF /usr/share/fonts/Type1
  echo "done"
}

post_upgrade() {
  post_install
}

post_remove() {
  post_install
}

```

Для более удобного создания пакетов из ttf-fonts вы можете также использовать [makefontpkg](https://aur.archlinux.org/packages/makefontpkg/) из [AUR](/index.php/AUR_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "AUR (Русский)").

### Установка вручную

Рекомендованный метод добавления шрифтов, недоступных в репозиториях, в систему описан в разделе [#Создание пакета](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.B0). Это даёт возможность пакетному менеджеру pacman удалять или обновлять их позднее. Шрифты также могут быть установлены вручную.

Чтобы установить шрифты для всей системы (доступные для всех пользователей), переместите папку шрифтов в директорию `/usr/share/fonts/`. Чтобы установить шрифты только для одного пользователя, добавляйте их директорию `~/.local/share/fonts`.

For Xserver to load fonts directly (as opposed to the use of a *font server*) the directory for your newly added font must be added with a FontPath entry. This entry is located in the *Files* section [of your Xorg configuration file](/index.php/Xorg#Configuration "Xorg") (e.g. `/etc/X11/xorg.conf` or `/etc/xorg.conf`). See [#Older applications](#Older_applications) for more detail.

После чего обновите кеш шрифтов fontconfig:

```
$ fc-cache -vf

```

# Рекомендации по выбору шрифтов

В качестве основного шрифта рабочего окружения можно рекомендовать либо [Droid Fonts](https://en.wikipedia.org/wiki/Droid_(font) "wikipedia:Droid (font)"), либо [Bitstream Vera Fonts](https://ru.wikipedia.org/wiki/Bitstream_Vera), либо [Red Hats Liberation Fonts](http://www.redhat.com/promo/fonts). Однако стоит заметить, что [начертание некоторых букв](http://i.imgur.com/osBDC4e.png) шрифта *Red Hats Liberation Fonts* на данный момент оставляет желать лучшего, поэтому его, в отличие от *Bitstream Vera Fonts*, необходимо устанавливать вручную, а не из репозитория.

## Установка Droid Fonts

 `# pacman -S ttf-droid` 

## Установка Bitstream Vera Fonts

 `# pacman -S ttf-dejavu` 

## Установка Red Hats Liberation Fonts

```
# mkdir /usr/share/fonts/TTFmisc
# cd /usr/share/fonts/TTFmisc
# wget -O ./liberation-fonts.tar.gz [https://bugzilla.redhat.com/attachment.cgi?id=290976](https://bugzilla.redhat.com/attachment.cgi?id=290976) 
# tar -xf ./liberation-fonts.tar.gz
# cp ./liberation-fonts/*.ttf ./
# rm -R ./liberation-fonts/
# rm -R liberation-fonts.tar.gz
# mkfontscale
# mkfontdir
```

## Установка шрифтов Microsoft

Так как в пакете *ttf-ms-fonts* присутствуют некоторые шрифты, начертание которых на данный момент оставляет желать лучшего, можно воспользоваться альтернативным вариантом их установки, который заключается в выборочной инсталляции только необходимых шрифтов.

Необходимые шрифты Вы можете скачать на [этой](http://sourceforge.net/project/showfiles.php?group_id=34153&package_id=56408) странице веб-сайта [SourceForge.net](https://ru.wikipedia.org/wiki/SourceForge.net)

***Не рекомендуется** скачивать шрифт* Arial*, т.к.* Red Hats Liberation Fonts*, загруженный с сайта [Red Hat Bugzilla](https://bugzilla.redhat.com/show_bug.cgi?id=427791), имеет схожее начертание и более чёткие линии.*

После того, как Вы скачали все необходимые exe-файлы — из них нужно извлечь шрифты в соответствующую папку (напр., `/usr/share/fonts/TTFmisc/`):

```
# cabextract -F *.TTF -d /usr/share/fonts/TTFmisc <имя-пакета>.exe
# cd /usr/share/fonts/TTFmisc
# mkfontscale
# mkfontdir

```

# Шрифты с включенным LCD фильтром

## "LCD" пакеты

**Установка:**

Удалите оригинальные пакеты:

```
# pacman -Rd libxft cairo

```

Установите патченные пакеты из [AUR](https://aur.archlinux.org/packages.php):

```
$ yaourt -S fontconfig-lcd
$ yaourt -S cairo-lcd
# pacman -S libxft-lcd

```

Перезапустите Xorg (`Ctrl+Alt+Backspace`)

**Удаление:**

```
# pacman -Rd libxft-lcd cairo-lcd fontconfig-lcd
# pacman -S libxft cairo

```

## "LCD" пакеты c патчами Ubuntu

**Установка:**

Процесс установки этих пакетов несколько отличается от вышеописанных. Для быстрой и успешной инсталляции все действия должны производиться в такой последовательности:

```
$ yaourt -S freetype2-ubuntu

```

При установке yaourt сообщит о конфликте, конфликтующие пакеты нужно будет удалить.

Аналогично устанавливаются остальные пакеты. Порядок установки пакетов должен быть таким:

```
 1\. freetype2-ubuntu
 2\. fontconfig-ubuntu
 3\. cairo-ubuntu

```

# Конфигурация

## Общие понятия

Настройки, касающиеся отрисовки шрифтов в Xorg, находятся в:

*   папке `/etc/fonts/`
*   файле `/etc/X11/Xresources` (содержимое ниже)

Содержимое `/etc/fonts/`:

*   папка conf.avail - содержит доступные файлы конфигураций
*   папка conf.d - содержит символические ссылки на файлы конфигураций (из папки `/etc/fonts/conf.d/`), определяющие параметры шрифтов (отрисовка, замена одних шрифтов другими и т.д.)
*   файл fonts.dtd
*   файл fonts.conf

Например, для применения автохинтинга шрифтов Free Type необходимо создать в папке `/etc/fonts/conf.d/` символическую ссылку на файл `/etc/fonts/conf.avail/10-autohint.conf`:

```
# ln -s /etc/fonts/conf.avail/10-autohint.conf /etc/fonts/conf.d/10-autohint.conf

```

**Примечание:** В настоящее время не все шрифты с автохинтингом выглядят приемлемо, поэтому рекомендуется его использовать либо для отрисовки шрифтов малого размера, либо не использовать вообще.

Как можно заметить, для файлов конфигурации применяется следующий формат именования:

`<xx>-<sometext>.conf`, где:

`<sometext>` - любой текст, описывающий параметры, находящиеся в этом файле (напр.: "hinting-full");

`<xx>` - двузначное число от 00 до 99, влияет на позицию файла при сортировке по имени, а, соответственно, и на его приоритет: чем больше число - тем выше приоритет.

Например: если в дирректории будут находится два файла с именами `11-hinting-slight.conf` (применение слабого сглаживания) и `10-hinting-medium.conf` (применение среднего сглаживания), то файл `11-hinting-slight.conf` "перекроет" файл `10-hinting-medium.conf` и при отрисовке шрифтов будет использоваться слабое сглаживание.

**Примечание:** В файле `/etc/fonts/conf.d/README` Вы можете более подробно узнать о префиксном нумеровании, применяемого для этих файлов.

## Рекомендации по настройке (для патчей *-ubuntu)

Здесь приведено содержимое конфигурационных файлов/каталогов, так или иначе влияющих на начертание шрифтов в системе.

**Примечание:** Если у Вас в системе всего один пользовательский аккаунт - настраивать шрифты рекомендуется посредством правки файла `~/.fonts.conf` ([#cat (альтернатива настройкам в )](#cat_.28.D0.B0.D0.BB.D1.8C.D1.82.D0.B5.D1.80.D0.BD.D0.B0.D1.82.D0.B8.D0.B2.D0.B0_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0.D0.BC_.D0.B2_.29)), т.к. это:

*   избавит Вас от повторной настройки при переустановке/смене дистрибутива
*   удобно для быстрого отката изменений (достаточно сделать копию одного файла, а не нескольких)

Файл `/etc/X11/Xresources`:

```
Xft.dpi: 96
! hintnone, hintslight, hintmedium, hintfull
Xft.hintstyle: hintfull
Xft.hinting: true
! lcdnone, lcddefault, lcdlight, lcdlegacy
Xft.lcdfilter: lcddefault
Xft.rgba: rgb

```

Эти настройки можно также задать персонально для пользователя в файле `~/.Xdefaults`. Подробнее об опциях Xft написано [здесь](http://www.freedesktop.org/wiki/ScreenFontSettings).

Каталог `/etc/fonts/conf.d/` :

```
lrwxrwxrwx 1 root root   31 Апр  9 10:48 10-antialias.conf -> ../conf.avail/10-antialias.conf
lrwxrwxrwx 1 root root   42 Апр 17 13:18 10-hinting-full.conf -> /etc/fonts/conf.avail/10-hinting-full.conf
lrwxrwxrwx 1 root root   29 Апр  9 10:48 10-hinting.conf -> ../conf.avail/10-hinting.conf
lrwxrwxrwx 1 root root   43 Апр  8 18:17 10-sub-pixel-rgb.conf -> /etc/fonts/conf.avail/10-sub-pixel-rgb.conf
lrwxrwxrwx 1 root root   51 Апр 17 13:14 11-lcd-filter-lcddefault.conf -> /etc/fonts/conf.avail/11-lcd-filter-lcddefault.conf
...
lrwxrwxrwx 1 root root   41 Апр  9 10:49 45-latin.conf -> /etc/fonts/conf.avail/45-latin.conf-droid
...
lrwxrwxrwx 1 root root   41 Апр  9 10:49 60-latin.conf -> /etc/fonts/conf.avail/60-latin.conf-droid
...
lrwxrwxrwx 1 root root   34 Апр  8 18:18 99-misc.conf -> /etc/fonts/conf.avail/99-misc.conf

```

Файл `/etc/fonts/conf.d/10-antialias.conf` :

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="antialias" mode="assign"><bool>true</bool></edit>
  </match>
</fontconfig>
```

Файл `/etc/fonts/conf.d/10-hinting-full.conf` :

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
  </match>
</fontconfig>
```

Файл `/etc/fonts/conf.d/10-hinting.conf` :

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
  </match>
</fontconfig>
```

Файл `/etc/fonts/conf.d/10-sub-pixel-rgb.conf` :

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="rgba" mode="assign"><const>rgb</const></edit>
  </match>
</fontconfig>
```

Файл `/etc/fonts/conf.d/11-lcd-filter-lcddefault.conf` :

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit mode="assign" name="lcdfilter">
      <const>lcddefault</const>
    </edit>
  </match>
</fontconfig>
```

Файл `/etc/fonts/conf.d/45-latin.conf-droid` :

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

	<alias>
		<family>Droid Serif</family>
		<family>Bitstream Vera Serif</family>
		<family>DejaVu Serif</family>
		<family>Liberation Serif</family>
		<family>Times New Roman</family>
		<family>Times</family>
		<family>Nimbus Roman No9 L</family>
		<family>Luxi Serif</family>
		<family>Thorndale AMT</family>
		<family>Thorndale</family>
		<default><family>serif</family></default>
	</alias>
	<alias>
		<family>Droid Sans</family>
		<family>Bitstream Vera Sans</family>
		<family>DejaVu Sans</family>
		<family>Liberation Sans</family>
		<family>Arial</family>
		<family>Helvetica</family>
		<family>Verdana</family>
		<family>Albany AMT</family>
		<family>Albany</family>
		<family>Nimbus Sans L</family>
		<family>Luxi Sans</family>
		<default><family>sans-serif</family></default>
	</alias>
 	<alias>
		<family>Droid Sans Mono</family>
		<family>Bitstream Vera Sans Mono</family>
		<family>DejaVu Sans Mono</family>
		<family>Liberation Mono</family>
		<family>Courier New</family>
		<family>Courier</family>
		<family>Andale Mono</family>
		<family>Luxi Mono</family>
		<family>Cumberland AMT</family>
		<family>Cumberland</family>
		<family>Nimbus Mono L</family>
		<default><family>monospace</family></default>
	</alias>
 	<alias>
		<family>Impact</family>
		<family>Copperplate Gothic Std</family>
		<family>Cooper Std</family>
		<family>Bauhaus Std</family>
		<default><family>fantasy</family></default>
	</alias>
	<alias>
		<family>ITC Zapf Chancery Std</family>
		<family>Zapfino</family>
		<family>Comic Sans MS</family>
		<default><family>cursive</family></default>
	</alias>
</fontconfig>
```

Файл `/etc/fonts/conf.d/60-latin.conf` :

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<alias>
		<family>serif</family>
		<prefer>
			<family>Droid Serif</family>
			<family>DejaVu Serif</family>
			<family>Bitstream Vera Serif</family>
			<family>Times New Roman</family>
			<family>Thorndale AMT</family>
			<family>Luxi Serif</family>
			<family>Nimbus Roman No9 L</family>
			<family>Times</family>
		</prefer>
	</alias>
	<alias>
		<family>sans-serif</family>
		<prefer>
			<family>Droid Sans</family>
			<family>DejaVu Sans</family>
			<family>Bitstream Vera Sans</family>
			<family>Verdana</family>
			<family>Arial</family>
			<family>Albany AMT</family>
			<family>Luxi Sans</family>
			<family>Nimbus Sans L</family>
			<family>Helvetica</family>
			<family>Lucida Sans Unicode</family>
			<family>BPG Glaho International</family> 
			<family>Tahoma</family> 
		</prefer>
	</alias>
	<alias>
		<family>monospace</family>
		<prefer>
			<family>Droid Sans Mono</family>
			<family>DejaVu Sans Mono</family>
			<family>Bitstream Vera Sans Mono</family>
			<family>Andale Mono</family>
			<family>Courier New</family>
			<family>Cumberland AMT</family>
			<family>Luxi Mono</family>
			<family>Nimbus Mono L</family>
			<family>Courier</family>
		</prefer>
	</alias>
 	<alias>
		<family>fantasy</family>
		<prefer>
			<family>Impact</family>
			<family>Copperplate Gothic Std</family>
			<family>Cooper Std</family>
			<family>Bauhaus Std</family>
		</prefer>
	</alias>
	<alias>
		<family>cursive</family>
		<prefer>
			<family>ITC Zapf Chancery Std</family>
			<family>Zapfino</family>
			<family>Comic Sans MS</family>
		</prefer>
	</alias>
</fontconfig>
```

Файл `/etc/fonts/conf.d/99-misc.conf` :

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font">
	<edit name="rgba" mode="assign">
	    <const>rgb</const>
	</edit>
    </match>

    <match target="font">
	<test name="size" compare="less_eq">
	    <double>8</double>
	</test>
	<edit name="autohint" mode="assign">
	    <bool>true</bool>
	</edit>
    </match>

    <match target="font">
	<test name="size" compare="more">
	    <double>10</double>
	</test>
	<edit name="hintstyle" mode="assign">
	    <const>hintslight</const>
	</edit>
    </match>

    <match target="font">
	<test name="family">
	    <string>Tahoma</string>
	</test>
	<test name="size" compare="eq">
	    <double>6</double>
	</test>
	<test name="weight" compare="more_eq">
	    <const>medium</const>
	</test>
	<edit name="autohint" mode="assign">
	    <bool>true</bool>
	</edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Clean</string>
        </test>
        <edit mode="assign" name="family" >
            <string>sans-serif</string>
        </edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Fixed</string>
        </test>
        <edit mode="assign" name="family" >
            <string>monospace</string>
        </edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Nimbus Sans L</string>
        </test>
        <edit mode="assign" name="family" >
            <string>sans-serif</string>
        </edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Nimbus Roman No9 L</string>
        </test>
        <edit mode="assign" name="family" >
            <string>serif</string>
        </edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Nimbus Mono L</string>
        </test>
        <edit mode="assign" name="family" >
            <string>monospace</string>
        </edit>
    </match>
</fontconfig>
```

**Примечание:** Рекомендации по настройке характерны для системы, в которой установлены следующие пакеты:

```
cairo-ubuntu
    Cairo vector graphics library, with Ubuntu's LCD rendering patches
fontconfig-ubuntu
    A library for configuring and customizing font access, with Ubuntu's LCD rendering patches
freetype2-ubuntu
    TrueType font rendering library, with Ubuntu's LCD rendering patches
libxft-ubuntu
    FreeType-based font drawing library for X, with Ubuntu's LCD rendering patches
ttf-droid
    A font created by Ascender Corporation for use by the Open Handset Alliance platform, Android.

```

### cat `~/.fonts.conf` (альтернатива настройкам в `/etc/fonts/...`)

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font">
        <edit name="antialias" mode="assign"><bool>true</bool></edit>
        <edit name="autohint" mode="assign"><bool>false</bool></edit>
        <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
        <edit name="hinting" mode="assign"><bool>true</bool></edit>
        <edit name="rgba" mode="assign"><const>rgb</const></edit>
	<edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
    </match>

    <match target="font">
	<test name="size" compare="less_eq"><double>8</double></test>
        <edit name="autohint" mode="assign"><bool>true</bool></edit>
    </match>
    <match target="font">
	<test name="size" compare="more_eq"><double>14</double></test>
	<edit name="rgba" mode="assign"><const>none</const></edit>
    </match>

    <match target="font">
        <test name="family"><string>Tahoma</string></test>
        <test name="size" compare="eq"><double>6</double></test>
        <test name="weight" compare="more_eq"><const>medium</const></test>
        <edit name="autohint" mode="assign"><bool>true</bool></edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Clean</string>
        </test>
        <edit mode="assign" name="family" >
            <string>sans-serif</string>
        </edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Fixed</string>
        </test>
        <edit mode="assign" name="family" >
            <string>monospace</string>
        </edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Nimbus Sans L</string>
        </test>
        <edit mode="assign" name="family" >
            <string>sans-serif</string>
        </edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Nimbus Roman No9 L</string>
        </test>
        <edit mode="assign" name="family" >
            <string>serif</string>
        </edit>
    </match>
    <match target="pattern" name="family" >
        <test name="family" qual="any" >
            <string>Nimbus Mono L</string>
        </test>
        <edit mode="assign" name="family" >
            <string>monospace</string>
        </edit>
    </match>

    <alias>
        <family>Droid Serif</family>
        <default><family>serif</family></default>
    </alias>

    <alias>
        <family>Droid Sans</family>
        <default><family>sans-serif</family></default>
    </alias>

    <alias>
        <family>Liberation Mono</family>
        <default><family>monospace</family></default>
    </alias>

    <alias>
        <family>serif</family>
        <prefer><family>Droid Serif</family></prefer>
    </alias>
    <alias>
        <family>sans-serif</family>
        <prefer><family>Droid Sans</family></prefer>
    </alias>
    <alias>
        <family>monospace</family>
        <prefer><family>Liberation Mono</family></prefer>
    </alias>
</fontconfig>
```

# Шрифт в консоли

## Теория

После запуска ядро Linux создаёт и поддерживает текстовую консоль.

Текст, выводимый в символьное устройство `/dev/console` , записывается в специальный буфер в памяти вместе с информацией о цвете.

Для отображения этого текста на экране используется другой буфер, в который загружен специально предназначенный для консоли растровый моноширинный шрифт.

При инициализации консоли в этот буфер записывается дефолтный шрифт, вкомпилированный в ядро (как правило, без кириллицы), а в дальнейшем шрифт в буфере может быть заменён с помощью утилиты `setfont`. Так как в этом буфере находится только содержимое файла со шрифтом, но не его название, ядро не знает, какой шрифт в него загружен, и в случае создания консоли заново, как это происходит при переключении из текстового режима во фрэймбуфер после старта соответствующего видеокарте drm-модуля, шрифт снова сбрасывается в дефолт.

В дополнение к "реальной" консоли, ядро поддерживает динамически расширяемый набор виртуальных консолей `/dev/tty1`, `tty2` и т.д., и корневую виртуальную консоль `/dev/tty0`

Хотя устройства для первых 59 виртуальных консолей создаются заранее, сами консоли при этом остаются в представлении ядра лишь номерами. Реально они появляются только после первой попытки вывода в них текста. На экран все виртуальные консоли выводятся путём подмены буферов в единственной "реальной" консоли, причём буфер шрифта при создании новой виртуальной консоли берётся тот, что был в "реальной" на момент создания.

В результате, если шрифт был загружен в реальную консоль **до** создания виртуальной консоли, в последующем он автоматически распространяется на все виртуальные, в противном случае этого не происходит, и каждая новая виртуальная наследует шрифт из предыдущей видимой, то есть тот, что был загружен в "реальную" в тот момент.

## Практика

В пакете `systemd` за загрузку консольного шрифта отвечает программа `/usr/lib/systemd/systemd-vconsole-setup` , которая читает его имя из параметра `FONT=` в конфиге `/etc/vconsole.conf` . Суффикс/расширение (.psf.gz) файла со шрифтом в конфиге писать не обязательно.

Имеющиеся в системе консольные шрифты находятся в каталоге `/usr/share/kbd/consolefonts/` , проверить их можно, запустив команду `setfont` для каждого из них.

Если для вашей видеокарты при загрузке системы подключается drm-модуль, например i915 для intel, его старт приводит к появлению нового устройства фреймбуфера *(или замене старого на новый)* (`/dev/fb0` и т.д.), и повторной инициализации консоли со сбросом шрифта. Если это происходит уже **после** того, как `systemd-vconsole-setup` загрузила ваш шрифт, вам требуется либо загрузить его повторно, либо [обеспечить старт drm-модуля](/index.php/KMS#Early_KMS_start "KMS") заведомо раньше загрузки шрифта.

Второе проще всего сделать, добавив ваш drm-модуль в строку [MODULES=](/index.php/Mkinitcpio#MODULES "Mkinitcpio") конфига `/etc/mkinitcpio.conf` и перегенерировав образ initramfs. Для стационарной системы этого вполне достаточно.

Если вы используете initramfs с хуком `systemd`, либо вообще не используете initramfs, или ваша же система "переносная", то есть находится на съёмном диске или флешке, и запускается на разных машинах, предпочтительнее первый вариант. Для этого нужно создать правило UDEV, которое будет срабатывать на появление нового устройства `/dev/fb*`

*   `/etc/udev/rules.d/96-fb-all-vcs-setup.rules`

```
# Setup all vconsoles for a new framebuffer device
KERNEL=="fb*", ACTION=="add", RUN+="/bin/sh /etc/udev/all-vcs-set.sh"

```

и скрипт, который оно будет запускать:

*   `/etc/udev/all-vcs-set.sh`

```
#!/bin/sh
# We must load locale for $VCS util
. /etc/locale.conf
export LANG
VCS=/usr/lib/systemd/systemd-vconsole-setup
# Setup the "real" (current) console first
$VCS
# Setup all other active consoles
for VC in /dev/vcs[0-9]*
do $VCS /dev/tty${VC#/dev/vcs}
done

```

Скрипт читает локаль, которая требуется для нормальной работы утилиты `systemd-vconsole-setup`, после чего выполняет её для "реальной" консоли, и для каждой из созданных на этот момент виртуальных, если такие есть. Для определения инициализированных виртуальных консолей здесь использованы устройства произвольного доступа к текстовым буферам соответствующих консолей `/dev/vcs*`, которые в отличии от `/dev/tty*` создаются только для уже имеющихся консолей.

Возможен ещё один вариант решения – отсрочить загрузку шрифта до момента инициализации фреймбуфера. Для этого можно создать правило UDEV, которое заставит systemd создавать юниты для устройств фреймбуфера:

*   `/etc/udev/rules.d/96-fb-systemd.rules`

```
# Register all framebuffer devices in systemd
SUBSYSTEM=="graphics", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/graphics/%k"

```

и дополнить `systemd-vconsole-setup.service`, указав, что установка шрифтов должна ожидать **первой** инициализации фреймбуфера:

*   `/etc/systemd/system/systemd-vconsole-setup.service.d/ordering.conf`

```
[Unit]
Requires=sys-subsystem-graphics-fb0.device
After=sys-subsystem-graphics-fb0.device

```

Этот вариант несколько проще, но менее универсален:

*   Он **не** будет работать в случаях **повторной** инициализации фреймбуфера, например, если при загрузке VESA-фреймбуфер сменяется на drm-фреймбуфер.
*   Также он **не** сможет загрузить шрифт в дополнительные виртуальные консоли, если они появились **до** инициализации фреймбуфера.
*   И наконец, он этот вариант **заблокирует загрузку шрифта при отсутствии фреймбуфера**.

Самый простой способ (пере)загрузки шрифта в консоли при инициализации фреймбуфера – прямой вызов утилиты **systemd-vconsole-setup** из правила UDEV:

*   `/etc/udev/rules.d/96-fb-vconsole-setup.rules`

```
# Setup vconsole for a new framebuffer device
KERNEL=="fb*", ACTION=="add", IMPORT{file}="/etc/locale.conf", RUN+="/usr/lib/systemd/systemd-vconsole-setup"

```

В этом случае загрузка шрифта не блокируется при отсутствии фреймбуфера, и срабатывает автоматически даже при его повторной инициализации. Единственный недостаток – шрифт не будет загружен для дополнительных виртуальных консолей, если они инициализируются раньше фреймбуфера. Эту возможность учитывает и реализует только решение с шелл-скриптом *(см. выше)*.

# Внешние ссылки

*   [Рендеринг шрифтов в X Window: как в ... и даже лучше](http://posix.ru/desktop/x_and_fonts/)

*   [Решение проблемы шрифта в консоли – archlinux.org.ru](http://archlinux.org.ru/forum/topic/1090/)